/**
 * http://usejsdoc.org/
 * 为ejs组装一些方法
 */


/**
 * 下划线转驼峰命名
 */
function transformStr3(str){
    var re=/_(\w)/g;
    return str.replace(re,function ($0,$1){
        return $1.toUpperCase();
    }).trim();
}
//驼峰或者帕斯科转下划线
function tuo2xia(str){
	var re=/[A-Z]/g;
	 let result= str.replace(re,function ($0,$1){
	        return "_"+$0.toLowerCase();
	    });
	 return result.trim().replace(/^_/,"");
}
//下划线转帕斯科命名
function toPasic(str){
	  return transformStr3(str).replace(/^[a-z]/,function($0){
		  return $0.toUpperCase();
	  });
}
function assert(b,msg) {
	if(!b){
		throw new Error(msg);
	}
}
function empty(str) {
	if(!str)return ""
		else
			return str;
}
function empty2(str,tt) {
	if(!str)return tt
		else
			return str;
}

module.exports={
	//为ejs的全局数据对象设置方法，这样模版上就可以使用这些方法了
	setFunctions:function(dataObj){
		dataObj.xia2TuoFeng=transformStr3;
		dataObj.xia2Pasic=toPasic;
		dataObj.toXia=tuo2xia;
		dataObj.assert=assert;
		dataObj.empty=empty;
		dataObj.empty2=empty2;
		dataObj.notnull=function (str,str2) {
			if(str){
				if(str2)return str2;
				return str;
			}else{
				return "";
			}
		}
		return dataObj;
	},
	toString:function(){
		return `
		为ejs的全局数据对象设置方法，这样模版上就可以使用这些方法了，
		提供以下方法：
		xia2TuoFeng(str)，将下划线转为驼峰命名
		xia2Pasic(str)，将下划线转为pasic命名
		toXia(str)，将驼峰或者pasic转为下划线命名
		`;
	},
	toPasic:toPasic
}